package com.zb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zb.entity.AccounLoginInfo;
import com.zb.entity.ZjSystemLog;
import com.zb.vo.SystemLogListSearchVo;

import java.util.List;

/**
 * <p>
 * 系统日志表 服务类
 * </p>
 *
 * @author WEN
 * @since 2023-07-29
 */
public interface ZjSystemLogService extends IService<ZjSystemLog> {

    /**
     * 操作成功日志
     * @param logintInfo 账号信息
     * @param empType 人员类型：1-PC端，2-客户报单移动端，3-服务商移动端，4-出入库移动端
     * @param ip 操作IP
     * @param browserDevice 浏览设备
     * @param moduleType 模块类型
     * @param type 类型
     * @param path 接口路径
     * @param remark 备注
     * @param param 请求参数
     */
    void saveSuccess(AccounLoginInfo logintInfo, Integer empType, String ip, String browserDevice, Integer moduleType, Integer type, String path, String remark, String param);

    /**
     * 操作异常日志
     * @param logintInfo 账号信息
     * @param empType 人员类型：1-PC端，2-客户报单移动端，3-服务商移动端，4-出入库移动端
     * @param ip 操作IP
     * @param browserDevice 浏览设备
     * @param moduleType 模块类型
     * @param type 类型
     * @param path 接口路径
     * @param remark 备注
     * @param param 请求参数
     * @param content 异常信息
     */
    void saveError(AccounLoginInfo logintInfo, Integer empType, String ip, String browserDevice, Integer moduleType, Integer type, String path, String remark, String param, String content);

    /**
     * 保存操作日志
     * @param logintInfo 账号信息
     * @param empType 人员类型：1-PC端，2-客户报单移动端，3-服务商移动端，4-出入库移动端
     * @param ip 操作IP
     * @param browserDevice 浏览设备
     * @param moduleType 模块类型
     * @param type 类型
     * @param path 接口路径
     * @param success 请求是否成功：false-请求失败，true-请求成功
     * @param remark 备注
     * @param param 请求参数
     * @param content 异常信息
     */
    void save(AccounLoginInfo logintInfo, Integer empType, String ip, String browserDevice, Integer moduleType, Integer type, String path, boolean success, String remark, String param, String content);

    /**
     * 获取系统操作日志列表
     * @param custAccId 商家ID
     * @param search 搜索对象
     * @return
     */
    List<ZjSystemLog> getList(Long custAccId, SystemLogListSearchVo search);

    /**
     * 获取系统操作日志列表总记录数
     * @param custAccId 商家ID
     * @param search 搜索对象
     * @return
     */
    long getListCount(Long custAccId, SystemLogListSearchVo search);

    /**
     * 根据系统日志ID获取日志操作内容
     * @param id
     * @return
     */
    Object getSysLogOperateContent(Long id);
}
